package edu.uoc.tdp.pac4.server;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JButton;

import edu.uoc.tdp.pac4.common.GestorExceptions;
import edu.uoc.tdp.pac4.common.RemotInterface;
import edu.uoc.tdp.pac4.server.RemotImpl;
import edu.uoc.tdp.pac4.i18n.TDSLanguageUtils;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;


public class PantallaServidor extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private javax.swing.JButton btnIniciar;
    private javax.swing.JButton btnParar;
    private javax.swing.JLabel lblMensaje;
    private Registry Naming;
    private JTextArea areaTexto;
    
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					//Cargamos el gestor de mensajes 
					TDSLanguageUtils.setDefaultLanguage("i18n/messages");
					
					PantallaServidor frame = new PantallaServidor();
					frame.setVisible(true);
				} catch (Exception e) {
					GestorExceptions.sentException(e.getMessage());
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public PantallaServidor() {
		TDSLanguageUtils.setDefaultLanguage("i18n/messages");
		String etiqueta = TDSLanguageUtils.getMessage("Servidor.titulo");
		setTitle(etiqueta);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 442, 207);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		etiqueta = TDSLanguageUtils.getMessage("lblMensaje.text1");
		lblMensaje = new JLabel(etiqueta);
		lblMensaje.setBounds(24, 11, 378, 14);
		contentPane.add(lblMensaje);
		
		
		etiqueta = TDSLanguageUtils.getMessage("btnIniciar.text");
		btnIniciar = new JButton(etiqueta);
		
		btnIniciar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				btnIniciarActionPerformed(e);	
			}
		});
		
		btnIniciar.setBounds(24, 36, 187, 23);
		contentPane.add(btnIniciar);
		
		etiqueta = TDSLanguageUtils.getMessage("btnParar.text");
		btnParar = new JButton(etiqueta);
		
		btnParar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				btnPararActionPerformed(e);
			}
		});
		
		btnParar.setBounds(220, 36, 182, 23);
		contentPane.add(btnParar);
		
		areaTexto = new JTextArea();
		areaTexto.setEditable(false);
		areaTexto.setBounds(24, 66, 378, 100);
		contentPane.add(areaTexto);
		
	}
	
	/*
     * Arranca el servidor
     */
	private void btnIniciarActionPerformed(ActionEvent evt){
		try {
            RemotInterface objetoRemoto = new RemotImpl();
            Naming = LocateRegistry.createRegistry(3232);
            Naming.rebind("rmiServidor", objetoRemoto);
            lblMensaje.setText(TDSLanguageUtils.getMessage("lblMensaje.text2"));
            btnIniciar.setEnabled(false);
            btnParar.setEnabled(true);
        } catch (RemoteException e) {
        	GestorExceptions.sentException(GestorExceptions.ERR_REG_RMI);
        } catch (Exception e) {
        	GestorExceptions.sentException(e.getMessage());        	
        }
	}

	
	/*
     * Para el servidor y cierra la ventana
     */
    private void btnPararActionPerformed(ActionEvent evt) {
        dispose();
        System.exit(0);
    }
    
    public void anadirEntradas(String texto) {
		areaTexto.append(texto + "\n");
	}
	
}
